/**
 * @description 删除数组的某一项
 * @author lf
 * @param {array} arr 源数组
 * @param {boolean|string|number} item 数组内的一项
 */
export function remove(arr, item) {
  if (arr.length) {
    const index = arr.indexOf(item)
    if (index > -1) {
      return arr.splice(index, 1)
    }
  }
}

/**
 * @description 判断一个字符串是不是json
 * @author lf
 * @param {string} val 字符串
 */
export function isJSON(val) {
  if (typeof val !== 'string') {
    return false
  }
  try {
    const obj = JSON.parse(val)
    if (Object.prototype.toString.call(obj) === '[object Object]') {
      return true
    }
    return false
  } catch (e) {
    return false
  }
}

/**
 * @description 将对象放入 FormData 内
 * @author lf
 * @param {objec} data 需要处理的数据对象
 */
export function appendFormData(data) {
  let form = new FormData()
  Object.keys(data).forEach(key => {
    form.append(key, data[key])
  })
  return form
}

/**
 * @description 判断该值是不是一个空值
 * @author lf
 * @param {any} val
 */
export function isDef(val) {
  return val !== null && val !== undefined
}

/**
 * @description 获取一个数据的数据类型
 * @author lf
 * @param {any} value
 */
export function getValueType(value) {
  return Object.prototype.toString
    .call(value)
    .slice(8, -1)
    .toLowerCase()
}

/**
 * @description 获取url上问号后面参数的值
 * @author lf
 * @param {string} name 想要获取的name
 * @returns 该值的value
 */
export function getQueryString(name) {
  var reg = new RegExp('(^|&|\\?)' + name + '=([^&]*)(&|$)', 'i')
  var r = window.location.href.match(reg)
  if (r != null) {
    return decodeURIComponent(r[2])
  }
  return null
}

/**
 * 将一个数组分成几个同等长度的数组
 * @param {*} array [分割的原数组]
 * @param {*} size [每个子数组的长度]
 */
export function sliceArray(array, size) {
  if (!array || array.length === 0) return [];
  let result = [];
  for (let i = 0, length = Math.ceil(array.length / size); i < length; i++) {
    result.push(array.slice(i * size, (i * size + size)))
  }
  return result
}